<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>轮播图</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    *{
      margin: 0;
      padding: 0;
    }
    body{
      padding:50px 0;
      background-color:#fff;
      font-size:14px;
      font-family: 'Avenir Next';
      color: #555;
      -webkit-font-smoothing:antialiased;
    }
    .slider .main .main-i,
    .slider .main,
    .slider{
      width: 100%;
      height: 400px;
      position: relative;
      /* z-index: 2; */
    }
    /* 幻灯片区域 */
    .slider .main{
      overflow: hidden;
    }
    .slider .maa{
    background: -webkit-linear-gradient(#e8e8e8, #ffffff); 
    background: -o-linear-gradient(#e8e8e8, #ffffff);
    background: -moz-linear-gradient(#e8e8e8, #ffffff);
    background: linear-gradient(#e8e8e8, #ffffff); 
    
    }
    /* 每一个幻灯片样式 */
    .slider .main .main-i{}
    .slider .main .main-i img{
      width:100%;
      position:absolute;
      left: 0;
      top: 50%;
      z-index:1;
    }
    .slider .main .main-i .caption{
      position: absolute;
      right: 70%;
      top:30%;
      z-index:9;
    }
    .slider .main .main-i .caption h2{
      font-size: 23px;
      line-height: 30px;
      color: #B5B5B5;
      text-align: right;
    }
    .slider .main .main-i .caption h3{
      font-size: 50px;
      line-height: 50px;
      color: #000000;
      text-align: right;
      font-family: 'Open Sans Condensed';
    }
    /* 控制按钮区域 */
    .slider .ctrl{
      width: 100%;
      height: 13px;
      line-height: 13px;
      text-align: center;
      position:absolute;
      left: 0;
      bottom: -13px;
      /* background-color:#f00; */
    }
    .slider .ctrl .ctrl-i{
      display: inline-block;
      width:150px;
      height:13px;
      background-color:#666;
      box-shadow:0 1px 1px rgba(0, 0, 0, .3);
      position: relative;
      margin-left:1px;
    }
    .slider .ctrl .ctrl-i img{
      width: 100%;
      position: absolute;
      left: 0;
      bottom:50px;
      z-index: 1;
      opacity:0;
      -webkit-transition: all .2s;
    }
    /* hover 到控制俺就的样式 */
    .slider .ctrl .ctrl-i:hover{
      background-color: #f0f0f0;
      
    }
    .slider .ctrl .ctrl-i:hover img{
      bottom: 13px;
      -webkit-box-reflect: below 0px -webkit-gradient(
        linear,
        left top,
        left bottom,
        from(transparent),
        color-stop(50%,transparent),
        to(rgba(255,255,255,.3)) 
        );
      opacity: 1;
    }
    /* 当前展现状态 */
    .slider .ctrl .ctrl-i_active:hover,
    .slider .ctrl .ctrl-i_active{
      background-color: #000;
    }
    .slider .ctrl .ctrl-i_active:hover img{
      opacity: 0;
    }
    /* 幻灯片切换的样式 */
    .slider .main .main-i{
      opacity:0;
      position:absolute ;
      right: 50%;
      top: 0;
      -webkit-transition:all .5s;
    }
    .slider .main .main-i h2{
      margin-right:45px;
    }
    .slider .main .main-i h3{
      margin-right:-45px;
    }
    .slider .main .main-i h2,
    .slider .main .main-i h3{
      opacity: 0;
      -webkit-transition:all .8s .8s;
    }
    .slider .main .main-i_active{
      opacity: 1;
      right: 0;
    }
    .slider .main .main-i_active h2,
    .slider .main .main-i_active h3{
      opacity: 1;
      margin-right:0px;
    }

  </style>
</head>
<body>
  <div class="slider">
    <div class="main maa  " id='template_main'>
      <div class="main-i" id='main_{{index}}'>
        <div class="caption">
          <h2>{{h2}}</h2>
          <h3>{{h3}}</h3>
        </div>
        <img src="./img/{{index}}.jpg" class="picture" alt="">
      </div>
    </div>
    <div class="ctrl" id="template_ctrl">
      <a href="javascript:switchSlider({{index}})" class="ctrl-i" id="ctrl_{{index}}"><img src="./img/{{index}}.jpg" alt=""></a>
    </div>
  </div>
  <script>
    // 1.数据定义
    var data = [
      {img:1,h1:'Creativ',h2:'DUEWT'},
      {img:2,h1:'Qsdfess',h2:'WEDDF'},
      {img:3,h1:'Bossccc',h2:'DFTVW'},
      {img:4,h1:'Tttseer',h2:'EDTRW'},
      {img:5,h1:'Vssseer',h2:'WDEGY'},
      {img:6,h1:'Gssseer',h2:'DVGYV'},
      {img:7,h1:'Hssseer',h2:'BNHGT'},
    ];
    //2.通用函数
    var g = function(id){
      if(id.substr(0,1) == '.'){  
       return document.getElementsByClassName(id.substr(1))
    }
     return document.getElementById(id);
    }
    //3.添加幻灯片的操作(所有幻灯片&对应的按钮)
    function addSliders(){
      //3.1 获取模板
      var tpl_main = g('template_main').innerHTML.replace(/^\s*/,'').replace(/\s*$/,'');
      var tpl_ctrl = g('template_ctrl').innerHTML.replace(/^\s*/,'').replace(/\s*$/,'');
      
      //3.2 定义最终输出 HTML 的变量
      var out_main = [];
      var out_ctrl = [];
      

      // 3.3 遍历所有数据，构建最终输出的 HTML
      for( i in data){
        var _html_main = tpl_main.replace(/{{index}}/g,data[i].img).replace(/{{h2}}/g,data[i].h1).replace(/{{h3}}/g,data[i].h2);

        var _html_ctrl = tpl_ctrl.replace(/{{index}}/g,data[i].img);

        out_main.push(_html_main);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
        out_ctrl.push(_html_ctrl);
       
      }
      
      //3.4 把HTML 回写到对应的DOM 里面
      g('template_main').innerHTML = out_main.join('');
      g('template_ctrl').innerHTML = out_ctrl.join('');
      console.log(out_main.join())
    }
    //5. 幻灯片切换
    function switchSlider(n){
      //5.1 获得要展现的幻灯片&控制按钮 DOM
      var main = g('main_' + n);
      var ctrl = g('ctrl_' + n);

      //5.2 获得所有的幻灯片以及控制按钮
      var clear_main = g('.main-i');
      var clear_ctrl = g('.ctrl-i');
      //5.3 清除他们的  active 样式
      for(i=0;i<clear_ctrl.length;i++){
        clear_main[i].className = clear_main[i].className.replace(' main-i_active','');
        clear_ctrl[i].className = clear_ctrl[i].className.replace(' ctrl-i_active','');
      }
      //5.4 附加样式
      main.className += ' main-i_active';
      ctrl.className += ' ctrl-i_active';
    }
    //6. 动态调整图片 垂直居中
    function movePictures(){  
      var pictures = g('.picture');
      for(i=0;i<pictures.length;i++){
        pictures[i].style.marginTop = (-1 * pictures[i].clientHeight/2) + 'px';
      }
    }
    //4.定义何时处理幻灯片输出
    window.onload = function(){
      addSliders();
      switchSlider(4)
      setTimeout(function a(){
        movePictures()
      },100)
    }
  </script>
 
</body>
</html>